博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
10.4 用户头像
阅读量:4096 次
发布时间:2019-05-25

本文共 1228 字,大约阅读时间需要 4 分钟。

通过显示用户头像, 我们可以进一步改进资料页面的外观。

一. 修改|-app/models

class User(UserMixin, db.Model):    avatar_hash = db.Column(db.String(32)) #1       def __init__(self, **kwargs):        super(User, self).__init__(**kwargs)        #...        self.avatar_hash = hashlib.md5(self.email.encode('utf-8')).hexdigest()  #1    def change_email(self, new_email): #2        self.email = new_email        self.avatar_hash = hashlib.md5(self.email.encode('utf-8')).hexdigest()        db.session.add(self)        return True    def gravatar(self, size=100, default='identicon', rating='g'):        if request.is_secure:            url = 'https://secure.gravatar.com/avatar'        else:            url = 'http://www.gravatar.com/avatar'        hash = self.avatar_hash or hashlib.md5(self.email.encode('utf-8')).hexdigest() #1   return '{url}/{hash}?s={size}&d={default}&r={rating}'.format(url=url, hash=hash, size=size, default=default, rating=rating)

二. 修改|-app/templates/user.html

三. 代码理解

#1

计算email的hash值是一项CPU密集型操作, 如果在某个页面生成大量头像, 计算量会非常大。因此我们在User表中增加一avatar_hash属性, 在构造函数中对用户的avatar_hash进行赋值, 以后调用gravatar生成hash的时候, 先从数据库中查找用户的avatar_hash, 如果没有再计算, 会节省很多计算量。

#2

我们添加修改email的函数change_email, 用户改完email后, 需要修改avatar_hash。

四. 运行效果

我们在导航条添加了头像的缩略图, 原理跟标题二相似。

你可能感兴趣的文章
近万服务实例稳定运行 0 故障,携程微服务架构是如何落地的?
查看>>
就这一次:TCP、IP、操作系统、Netty、算法一次性讲透
查看>>
大厂面试题中爱问的「调度算法」,20张图一举拿下
查看>>
一篇文章带你深入了解MySQL 索引相关
查看>>
GitHub上标星高达55.3Kstar的牛逼项目,附项目源代码
查看>>
你要连MySQL事务实现的基本原理都不懂,那你的面试基本凉凉
查看>>
到了2020年,技术水平到底需要达到怎样的程度才能成为顶级的阿里P8架构师
查看>>
牛皮了!一篇文章直接解决关于TCP的23种疑难问题!
查看>>
使用Docker、Nginx和Jenkins实现前端自动化部署
查看>>
牛皮了!2020最全MySQL索引优化架构+索引系统+数据结构选择+红黑树+B树
查看>>
大数据简介,技术体系分类整理
查看>>
Spring Boot 2.x:Elasticsearch快速入门
查看>>
鸿蒙OS被知乎嘲讽 程序员大佬澄清:华为对Linux贡献数一数二
查看>>
NIO框架详解:Netty的高性能之道(建议收藏)
查看>>
面试阿里、京东、字节跳动90%会被问到这些常用的Java技术
查看>>
java内存溢出问题分析过程
查看>>
大数据从业人员必要技能之Kafka
查看>>
还在担心服务挂掉?Sentinel Go 让服务稳如磐石
查看>>
Java ConcurrentHashMap 高并发安全实现原理解析
查看>>
珍贵经验!Spring Boot 内存又泄露,排查太难了!
查看>>